package cn.tedu.blog.server.mapper;


import cn.tedu.blog.server.pojo.dto.TagAddNewDTO;
import cn.tedu.blog.server.pojo.entity.Tag;
import cn.tedu.blog.server.pojo.vo.TagDetailVO;
import cn.tedu.blog.server.pojo.vo.TagListItemVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;


import java.util.List;

@Repository
public interface TagMapper {
//     int selectId(String Name) ;

    List<TagDetailVO> select();

    /**
     * 插入标签数据
     * @param tag 标签数据
     * @return 受影响的行数,成功插入数据时,返回1
     */
    int insert(Tag tag);

    /**
     * 根据标签名称统计此名称对应的标签数据的数量
     * @param name 标签名称
     * @return 此名称对应的标签数据的数量
     */
    int countByName(String name);

    /**
     * 根据ID修改标签信息
     * @param tagAddNewDTO 封装了新的值的对象
     * @return 影响的行数,当修改成功时,将返回1,如果无此id对应的数据,将返回0
     */
    int updateById(TagAddNewDTO tagAddNewDTO);


    /**
     *查询修改的标签是否已被使用
     * @param id
     * @param name
     * @return
     */
    int isName(@Param("id") Long id, @Param("name") String name);

    /**
     * 根据标签id删除标签数据
     * @param list    标签id
     * @return  受影响的行数
     */
    int deleteByIds(List<Long> list);

    /**
     * 查询标签列表
     * @return  标签数据集合
     */
    List<TagListItemVO> list();


    List<Long> selectIdByName(String[] tags);
}
